The ColdFire assembler, AS68CF, supports the instruction set as described in the Freescale CFPRM Rev 3 (C) 03/2005 manual. Additional instructions have been added to ColdFire as the core has matured. Many are included in this version of the assem- bler. This assembler does not support cycle counts per instruction as the ColdFire is available in chip or IP Core form.
AS6CF ASSEMBLER SPECIFIC DIRECTIVES .setdp Directive Format: .setdp [base [,area]] The .setdp directive is used to inform the assembler of the current direct page region and the offset address within the selected area. The normal invocation methods are: .area DIRECT (PAG) .setdp or .setdp #,DIRECT AS68CF has two paging regions, the first 32K bytes and the last 32K bytes of the 32-bit addressing space. The paged ad- dressing ranges are 0x00000000-0x00007FFF and 0xFFFF8000-0xFFFFFFFF. Define a different area for each of the regions: .area LOPAGE (PAG) .setdp 0x00000000,LOPAGE .area HIPAGE (PAG) .setdp 0xFFFF8000,HIPAGE These two regions must both be linked with a base address of 0x00000000 to position them so that instructions can use the 16-bit short forms to access these regions. Explicit direct page addressing is invoked by using the '*' prefix to a label or symbol. Automatic direct page addressing can be invoked by ena- bling the autodpcnst (Automatic Direct Page Constants) and/or the autodpsmbl (Automatic Direct Page Symbols) options. The assembler verifies that any local variable used in a direct variable reference is located in one of these areas. Lo- cal variable and constant value direct access addresses are checked to be within the paging address ranges. The linker will check all external direct page relocations to verify that they are within the correct area. External global references are normally specified using the .globl directive. However the two paging areas of AS68K require additional information for the external references. This is done by the directives .lodpgbl and .hidpgbl. .lodpgbl Directive Format: .lodpgbl arg1, arg2, ... Where the arguments are labels or symbols with values that are in the 0x00000000-0x00007FFF direct page. If the low page area has not been specified then the arguments are defined as being in the current area. .hidpgbl Directive Format: .hidpgbl arg1, arg2, ... Were the arguments are labels or symbols with values that are in the 0xFFFF8000-0xFFFFFFFF direct page. If the high page area has not been specified then the arguments are defined as being in the current area. .flt16, .flt32, and .flt64 There are three supported floating point formats available in the AS68CF assembler where arg1, arg2, ... represent one or more floating-point numbers. Format: .flt16 arg1, arg2, ... .flt16 causes one word of storage to be generated for each argument. Word: 16-Bit Floating Point Format: 15 14 7 6 0 S EEEEEEEE MMMMMMM Mantissa (7 bits) Exponent (8 bits) Biased Sign (1 bit) Format: .flt32 arg1, arg2, ... .flt32 causes two words of storage to be generated for each argument. Single: 32-Bit Floating Point: 31 30 23 22 0 S EEEEEEEE MMM.....MMM Mantissa (23 bits) Exponent (8 bits) Biased Sign (1 bit) Format: .flt64 arg1, arg2, ... .flt64 generates 4 words of storage for each argument. Double: 64-Bit Floating Point 63 62 52 51 0 S EEEEEEEEEEE MMM.....MMM Mantissa (52 bits) Exponent (11 bits) Biased Sign (1 bit) The arguments are evaluated and the results are stored in the object module. Unlike the .word directive only the sign opera- tors (+) and (-) may be used in the evaluation of a floating-point argument. No arithmetic operations are allowed in the floating-point argument. A floating-point number is represented by a string of decimal digits. The string (which can be a single digit in length) may contain an optional decimal point and may be followed by an op- tional exponent indicator in the form of 'E' or 'e' followed by a signed decimal integer exponent. The number may not contain embedded blanks, tabs, or angle brackets and may not be an ex- pression. The AS68CF assembler returns a value of the appropriate size and precision via one of the floating-point directives. The values returned may be truncated or rounded as selected by the '.enabl (fpt)' or '.dsabl (fpt)' respectively. Floating-point numbers are normally rounded. That is, when a floating-point number exceeds the limits of the field in which it is to be stored, the high-order bit of the unretained portion is added to the low-order bit of the retained portion. ^F - The Temporary Floating-Point Operator Format: ^F ^F is a unary operator for numeric control which allows you to specify an argument that is either a 1-word or 2-word floating-point number. For example, the following statement: A: MOVE.W #^F3.7,D0 creates an immediate 1-word floating-point number containing the value 3.7 formatted as shown in the .flt16 description in a pre- vious section. The following statement: B: MOVE.L #^F3.7,D0 creates an immediate 2-word floating-point number containing the value 3.7 formatted as shown in the .flt32 description in a pre- vious section. The ^F operator is only allowed in an instruction. .enabl and .dsabl Format: .enabl (arg1, arg2, ...) .dsabl (arg1, arg2, ...) where: arg1, arg2, ... represent one or more of the following options alt Allow Alternate Instructions autodpcnst Automatic Direct Paging For Constants autodpsmbl Automatic Direct Paging For Symbols mac Multiply-Accumulate Unit emac Extended Multiply-Accumulate Unit flt Floating Point Instructions fpt Floating-Point Truncation alt: controls whether the automatic translation of instructions to alternate instruction forms is enabled. The default is enabled. The following translations may be performed: MOVE [],An -> MOVEA [],An MOVE #,Dn -> MOVEQ #,Dn (#: -128 to +127) ADD Dn,An -> ADDA Dn,An ADD #,Dn -> ADDI #,Dn ADD #,Dn -> ADDQ #,Dn (#: 1 to 8) AND #,Dn -> ANDI #,Dn CMP [],An -> CMPA [],An CMP #,Dn -> CMPI #,Dn EOR #,[] -> EORI #,[] OR #,Dn -> ORI #,Dn SUB [],An -> SUBA [],An SUB #,Dn -> SUBI #,Dn SUB #,Dn -> SUBQ #,Dn (#: 1 to 8) autodpcnst: controls whether instructions without length quali- fies, .B, .W, .L, can automatically use short forms when the constants are within the ranges of 0x00000000-0x00007FFF (low paging region) or 0xFFFF8000-0xFFFFFFFF (high paging region) or are external globals. The paging regions must have been speci- fied for this option to take effect. The default is enabled. autodpsmbl: controls whether instructions without length quali- fies, .B, .W, .L, can automatically use short forms when the symbols are within the ranges of 0x00000000-0x00007FFF (low pag- ing region) or 0xFFFF8000-0xFFFFFFFF (high paging region) or are external globals. The paging regions must have been specified for this option to take effect. The default is enabled. mac: controls whether the multiply-accumulate instructions are assembled. Normally disabled. emac: controls whether the extended multiply-accumulate in- structions are assembled. Normally disabled. flt: controls whether floating-point instructions are as- sembled. Normally disabled. fpt: controls whether floating-point truncation is active. Normal mode is fpt disabled and rounding is enabled. Note that 'mac' and 'emac' are mutually exclusive, enabling one disables the other.
COLDFIRE REGISTER SET The following is a list of the ColdFire registers used by AS68CF. Eight 32-bit data registers provide data as bytes, words, and longs. Eight address registers provide addresses as words or longs. Other registers include the 32-bit program counter and the 8-bit status register. The control registers are not described in this document. Data Registers |- Long ---------------------------| |- Word-----------| |- Byte -| 31 16 15 8 7 0 |----------------|--------|--------| |- | | -| D0 |----------------|--------|--------| |- | | -| D1 |----------------|--------|--------| |- | | -| D2 |----------------|--------|--------| |- | | -| D3 |----------------|--------|--------| |- | | -| D4 |----------------|--------|--------| |- | | -| D5 |----------------|--------|--------| |- | | -| D6 |----------------|--------|--------| |- | | -| D7 |----------------|--------|--------| Address Registers |- Long --------------------------| |- Word----------| 31 16 15 0 |----------------|----------------| |- | -| A0 |----------------|----------------| |- | -| A1 |----------------|----------------| |- | -| A2 |----------------|----------------| |- | -| A3 |----------------|----------------| |- | -| A4 |----------------|----------------| |- | -| A5 |----------------|----------------| |- | -| A6 |----------------|----------------| |- User Stack Pointer -| |----------------|----------------| A7 / SP |- Supervisor Stack Pointer -| |----------------|----------------| 31 0 |--------------------------------| |- Program Counter | |--------------------------------| |--------|--------| Status Register| System | User | |--------|--------|
COLDFIRE ADDRESSING MODES Mode Register Syntax Addressing Mode ----- -------- -------- ---------------------------- 000 Reg # Dn Data Reg Dir 001 Reg # An Addr Reg Dir 010 Reg # (An) Addr Reg Ind 011 Reg # (An)+ Addr Reg Ind w/Postinc 100 Reg # -(An) Addr Reg Ind w/Predec 101 Reg # d16(An) Addr Reg Ind w/Disp or (d16,An) 110 Reg # d8(An,Rn) Addr Reg Ind w/Disp w/Index or (d8,An,Rn) 111 000 xxx Absolute Short or (xxx).W 111 001 xxxxx Absolute Long or (xxxxx).L 111 010 d16(PC) Prog Ctr Ind w/Disp or (d16,PC) 111 011 d8(PC,Rn) Prog Ctr Ind w/Disp w/Index or (d8,PC,Rn) 111 100 #xxx Immediate or #(xxx).W Short Immediate or #(xxx).L Long Immediate Where Rn is An or Dn Note that Rn supports Rn.W and Rn.L forms and an optional scale factor of *1, *2, or *4 when the addressing mode is d8(An,Rn) or d8(PC,Rn) The following short forms are also supported: @An <==> (An) @An+ <==> (An)+ -@An <==> -(An)
COLDFIRE BASE INSTRUCTION SET The following tables list all the instructions found in this implementation of the ColdFire assembler. The (.B,.W,.L) indi- cates an instruction has byte, word, and long forms. The brackets '[]' indicate one of the described addressing modes. Note that most instructions do not support all addressing modes, see the appropriate data sheets for allowed modes. For Instructions having multiple sizes the assembler automa- tically selects an appropriate size or a default size if the size suffix is blank. This most often defaults to using the word form. For those instructions with only a single size the sizing suffix is optional. The ColdFire instructions have a maximum length of three words (48 bits). This limits instructions to specific address- ing modes. Double operand instructions will report certain pairs of addressing modes as illegal if the total instruction size exceeds the three word limit. Ry Source Register (Dy or Ay) Rx Destination Register (Dx or Ax) CRy Source Control Register CRx Destination Control Register Dw Second Destination Register Dc First Compare Register Du Second Compare Register []y Source Addressing Mode []x Destination Addressing Mode # A Source Number MOVE Instructions MOVE (.B,.W,.L) []y,[]x Source To Destination MOVE (.W) CCR,Dx From Condition Code Register MOVE (.B) Dy,CCR To Condition Code Register MOVE (.B) #,CCR To Condition Code Register MOVE (.W) SR,[]x From Status Register MOVE (.W) []y,SR To Status Register MOVE (.L) USP,Ax From User Stack Pointer MOVE (.L) Ay,USP To User Stack Pointer MOVEA (.W,.L) []y,Ax To Address Register MOVEC (.L) Ry,CRx To Control register MOVEM (.W,.L) Rlist,[]x From Registers In List MOVEM (.W,.L) []y,Rlist To Registers In List MOVEQ (.L) #,[]x Signed 8-Bit # To Destination MOV3Q (.L) #,[]x -1,1-7 3-Bit # To Destination MVS (.B,.W) []y,Dx Move With Sign Extend To Long MVZ (.B,.W) []y,Dx Move With Zero Fill To Long Double Operand ADD (.L) []y,Dx ADD Source To Destination ADD (.L) Dy,[]x ADD Source To Destination ADDA (.L) []y,Ax ADD Source To An ADDX (.L) Dy,Dx ADD Source and X (Carry) To Destination AND (.L) []y,Dx AND Source With Dn AND (.L) Dy,[]x AND Dn With Destination or Rn > [] Upper Bound, TRAP CMP (.B,.W,.L) []y,[]x Destination - Source, Set CCs CMPA (.W,.L) []y,Ax Compare Source With An DIVS (.W,.L) []y,Dx Signed Destination/Source DIVU (.W,.L) []y,Dx UnSigned Destination/Source EOR (.L) Dy,[]x XOR Source With Destination MULS (.W,.L) []y,Dx Signed Source*Destination MULU (.W,.L) []y,Dx UnSigned Source*Destination OR (.L) []y,[]x Source ORed With Destination SUB (.L) []y,Dx Subtract Source From Dn SUB (.L) Dy,[]x Subtract Source From Destination SUBA (.L) []y,Ax Subtract Source From An SUBX (.L) Dy,Dx Subtract Source and X (Carry) From Destination Immediate Instructions ADDI (.L) #,[]x ADD Immediate To Destination ADDQ (.L) #,[]x ADD 1-8 To Destination ANDI (.L) #,[]x AND Immediate To Destination CMPI (.B,.W,.L) #,[]x CMP Immediate With Destination EORI (.L) #,[]x XOR Immediate With Destination ORI (.L) #,[]x OR Immediate With Destination SUBI (.L) #,[]x SUB Immediate From Destination SUBQ (.L) #,[]x SUB 1-8 From Destination Single Operand CLR (.B,.W,.L) []x Clear Destination EXT (.W,.L) Dx Extend Byte To Word or Word To Long EXTB (.L) Dx Extend Byte To Long NEG (.L) Dx Negate Destination NEGX (.L) Dx Negate Dest. With X (Carry) NOT (.L) Dx Complement Destination TST (.B,.W,.L) []x Test Destination Shift And Rotate ASR (.L) Dy,Dx Arithmetic Shift Right ASR (.L) #,Dx Arithmetic Shift Right ASL (.L) Dy,Dx Arithmetic Shift Left ASL (.L) #,Dx Arithmetic Shift Left LSR (.L) Dy,Dx Logical Shift Right LSR (.L) #,Dx Logical Shift Right LSL (.L) Dy,Dx Logical Shift Left LSL (.L) #,Dx Logical Shift Left Bit Manipulation BCHG (.B,.L) Dy,[]x Test Bit And Change BCHG (.B,.L) #,[]x BCLR (.B,.L) Dy,[]x Test A Bit And Clear BCLR (.B,.L) #,[]x BSET (.B,.L) Dy,[]x Test A Bit And Set BSET (.B,.L) #,[]x BTST (.B,.L) Dy,[]x Test A Bit BTST (.B,.L) #,[]x BITREV (.L) Dy Bit Reverse Register BYTEREV (.L) Dy Byte Reverse Register SWAP (.W) Dx Swap Words TAS (.B) []x Test And Set An Operand Branch On Condition Instructions The short (.S) branch instructions have a range of -126 to +129 bytes relative to the address of the branch instruction. The word (.W) branch instructions have a range of -32,766 to +32,769 bytes relative to the address of the branch instruction. The instruction argument is normally an address. BCC label Carry Clear BLS label Lower Or Same BCS label Carry Set BLT label Less Than BEQ label Equal BMI label Minus BGE label Greater Or Equal BNE label Not Equal BGT label Greater Than BPL label Plus BHI label Higher BVC label Overflow Clear BLE label Less Or Equal BVS label Overflow Set BHS label Higher Or Same BLO label Lower Than BRA label Branch Always BSR label Branch To Subroutine Branch instructions without .S, .W, or .L are automatically sized according to the branch range. External branches without .S or .W are always .L sized. Set According To Condition The Condition is tested and if True the addressed byte is set to all 1s else the addressed byte is set to all 0s. SCC (.B) []x Carry Clear SHS (.B) []x Higher Or Same (SCC) SLS (.B) []x Lower Or Same SCS (.B) []x Carry Set SLO (.B) []x Lower (SCS) SLT (.B) []x Less Than SEQ (.B) []x Equal SMI (.B) []x Minus SF (.B) []x False SNE (.B) []x Not Equal SGE (.B) []x Greater Or Equal SPL (.B) []x Plus SGT (.B) []x Greater Than ST (.B) []x True SHI (.B) []x Higher SVC (.B) []x Overflow Clear SLE (.B) []x Less Or Equal SVS (.B) []x Overflow Set Trap False TPF PC + 2 -> PC, Opcode Only TPF.W PC + 4 -> PC, Opcode Only TPF.L PC + 6 -> PC, Opcode Only TPF (.W,.L) # Autoselect TPF.W or TPF.L TPF.W # PC + 4 -> PC, Opcode + Word TPF.L # PC + 6 -> PC, Opcode + Long Other Instructions JMP []y Jump To Location JSR []y Jump To Subroutine LEA (.L) []y,Ax Load Effective Address PEA (.L) []y Push Effective Address Push And Possibly Invalidate Cache CPUSHL dc,(Ax) Data Cache CPUSHL ic,(Ax) Instruction Cache CPUSHL bc,(Ax) Both Caches FF1 (.L) Dx Find First 1 In Register HALT Halt The CPU ILLEGAL Illegal Instruction Exception INTOUCH (Ay) Instruction Fetch Touch LINK Ay,# Link And Allocate NOP No Operation PULSE Generate Unique Processor Status REMS (.L) []y,Dw:Dx Signed Divide Remainder REMU (.L) []y,Dw:Dx Unsigned Divide Remainder RTE Return From Exception RTS Return From Subroutine SATS (.L) []x Signed Saturate STRLDSR (.W) # Store/Load Status Register STOP # Load Status Register And Stop TRAP # Trap To Vector (0-15) UNLK Ax Load Stack Pointer, Pop Stack WDDATA (.B,.W,.L) []y Write To Debug Data WDEBUG (.L) []y Write Debug Control Register Undocumented Instructions The following instructions may have been restored in more re- cent versions of the Coldfire core. CAS Dc,Du,[]y Compare And Swap With Operand CAS2 Dc1:Dc2,Du1:Du2,(Ry1):(Ry2) CHK (.W,.L) []y,Dx Dn < 0 or Dn > [], TRAP CHK2 (.B.,W,.L) []y,Rx Rn < [] Lower Bound CMP2 (.B,.W,.L) []y,Rx Upper/Lower Bounds Check
MULTIPLY-ACCUMULATE INSTRUCTION SET The syntax: Arguments within { } are options. Ry Source Register (Dy or Ay) Rx Destination Register (Dx or Ax) Rw Load Destination Register (Dw or Aw) {U,L} U For Upper Word, L For Lower Word {<<,>>} << For Product<<1 >> For Product>>1 {&} ANDed With MASK Register Multiply-Accumulate Operations Multiply Accumulate MAC (.W) Ry.{U,L},Rx.{U,L}{<<,>>} MAC (.L) Ry,Rx{<<,>>} Multiply Accumulate With Load MAC (.W) Ry.{U,L},Rx.{U,L}{<<,>>},[]y{&},Rw MAC (.L) Ry,Rx{<<,>>},[]y{&},Rw Multiply Subtract MSAC (.W) Ry.{U,L},Rx.{U,L}{<<,>>} MSAC (.L) Ry,Rx{<<,>>} Multiply Subtract With Load MSAC (.W) Ry.{U,L},Rx.{U,L}{<<,>>},[]y{&},Rw MSAC (.L) Ry,Rx{<<,>>},[]y{&},Rw Move Operations MOVE (.L) ACC,Rx Move From Accumulator MOVE (.L) Ry,ACC Move To Accumulator MOVE (.L) #,ACC MOVE (.L) MACSR,Rx Move From MAC CSR MOVE (.L) Ry,MACSR Move To MAC CSR MOVE (.L) #,MACSR MOVE (.L) MASK,Rx Move From MASK MOVE (.L) Ry,MASK Move To MASK MOVE (.L) #,MASK MOVE (.L) MACSR,CCR Move From MACSR To CCR
EXTENDED MULTIPLY-ACCUMULATE INSTRUCTION SET The syntax: Arguments within { } are options. ACCy Source FP Accumulator ACCx Destination FP Accumulator ACCw Second Destination FP Accumulator Ry Source Register (Dy or Ay) Rx Destination Register (Dx or Ax) Rw Load Destination Register (Dw or Aw) {U,L} U For Upper Word, L For Lower Word {<<,>>} << For Product<<1 >> For Product>>1 {&} ANDed With MASK Register Multiply-Accumulate Operations Multiply Accumulate MAC (.W) Ry.{U,L},Rx.{U,L}{<<,>>} MAC (.L) Ry,Rx{<<,>>} Multiply Accumulate With Load MAC (.W) Ry.{U,L},Rx.{U,L}{<<,>>},[]y{&},Rw MAC (.L) Ry,Rx{<<,>>},[]y{&},Rw Multiply Subtract MSAC (.W) Ry.{U,L},Rx.{U,L}{<<,>>},ACCx MSAC (.L) Ry,Rx{<<,>>},ACCx Multiply Subtract With Load MSAC (.W) Ry.{U,L},Rx.{U,L}{<<,>>},[]y{&},Rw,ACCx MSAC (.L) Ry,Rx{<<,>>},[]y{&},Rw,ACCx Multiply And Add To First Accumulator Add To Second Accumulator MAAAC (.W) Ry.{U,L},Rx.{U,L}{<<,>>},ACCx,ACCw MAAAC (.L) Ry,Rx{<<,>>},ACCx,ACCw Multiply And Add To First Accumulator Subtract From Second Accumulator MASAC (.W) Ry.{U,L},Rx.{U,L}{<<,>>},ACCx,ACCw MASAC (.L) Ry,Rx{<<,>>},ACCx,ACCw Multiply And Subtract From First Accumulator Add To Second Accumulator MSAAC (.W) Ry.{U,L},Rx.{U,L}{<<,>>},ACCx,ACCw MSAAC (.L) Ry,Rx{<<,>>},ACCx,ACCw Multiply And Subtract From First Accumulator Subtract From Second Accumulator MSSAC (.W) Ry.{U,L},Rx.{U,L}{<<,>>},ACCx,ACCw MSSAC (.L) Ry,Rx{<<,>>},ACCx,ACCw Move Operations MOVCLR (.L) ACCy,Rx Move From Accumulator And Clear Accumulator MOVE (.L) ACCy,Rx Move From Accumulator MOVE (.L) Ry,ACCx Move To Accumulator MOVE (.L) #,ACCx MOVE (.L) ACCext01,Rx Move From Accumulator 0 And 1 Extensions MOVE (.L) Ry,ACCext01 Move To Accumulator 0 And 1 Extensions MOVE (.L) #,ACCext01 Move To Accumulator 0 And 1 Extensions MOVE (.L) ACCext23,Rx Move From Accumulator 2 And 3 Extensions MOVE (.L) Ry,ACCext23 Move To Accumulator 2 And 3 Extensions MOVE (.L) #,ACCext23 Move To Accumulator 2 And 3 Extensions MOVE (.L) MACSR,Rx Move From The MACSR MOVE (.L) Ry,MACSR Move To The MACSR MOVE (.L) #,MACSR MOVE (.L) MASK,Rx Move From The MASK MOVE (.L) Ry,MASK Move To The MASK MOVE (.L) #,MASK MOVE (.L) ACCy,ACCx Copy An Accumulator MOVE (.L) MACSR,CCR Move From The MACSR To The CCR
COLDFIRE FLOATING POINT INSTRUCTION SET The floating point instruction set for the ColdFire is sum- marized in this section. The floating point selection options: .enabl (flt) Enable Floating Point .enabl (fpt) Enable Floating Point Truncation The following sections describe the floating point instruc- tions separated into these instruction groups: Data Movement Dyadic Operations Monadic Operations Program Control System Control The tables contain the operand syntax and the operand format which is summarized here: FPy A floating point SRC register (FP0-FP7) FPx A floating point DST register (FP0-FP7) FPcr A Floating point Control Register []y SRC addressing mode []x DST addressing mode <label> Branching labelData or Control register list B Byte W Word L Long S Single D Double Data Movement Instructions Instruction OP Syntax OP Format ----------- --------- --------- FMOVE FPy,FPx D []y,FPx B,W,L,S,D FPy,[]x B,W,L,S,D []y,FPcr L FPcr,[]x L []y,FPIAR L FPIAR,[]x L []y,FPSR L FPSR,[]x L Single Precision Rounding FSMOVE []y,FPx B,W,L,S,D FSMOVE FPy,FPx D Double Precision Rounding FDMOVE []y,FPx B,W,L,S,D FDMOVE FPy,FPx D FMOVEM []y,
D
,[]x D Dyadic Instructions Instruction OP Syntax OP Format ----------- --------- --------- F(dop) []y,FPx B,W,L,S,D FPy,FPx D If Noted: FPy -> (Fpy,Fpy) D FS(dop) Round To Single Precision FD(dop) Round To Double Precision ----------------------------------------- FADD Add FSADD Add FDADD Add FCMP Compare FDIV Divide FSDIV Divide FDDIV Divide FMUL Multiply FSMUL Multiply FDMUL Multiply FSUB Subtract FSSUB Subtract FDSUB Subtract Monadic Instructions Instruction OP Syntax OP Format ----------- --------- --------- F(mop) []y,FPx B,W,L,S,D FPy,FPx D If Noted: FPy -> (Fpy,Fpy) D FS(dop) Round To Single Precision FD(dop) Round To Double Precision ----------------------------------------- FABS Absolute Value FABS FPy Same As FABS FPy,FPy FSABS Absolute Value FSABS FPy Same As FSABS FPy,FPy FDABS Absolute Value FDABS FPy Same As FDABS FPy,FPy FINT Integer Part FINT FPy Same As FINT FPy,FPy FINTRZ Integer Part FINTRZ FPy Same As FINTRZ FPy,FPy FNEG Negate FNEG FPy Same As FNEG FPy,Fpy FSNEG Negate FSNEG FPy Same As FSNEG Fpy,Fpy FDNEG Negate FDNEG Fpy Same As FDNEG FPy,FPy FSQRT Square Root FSQRT FPy Same As FSQRT FPy,FPy FSSQRT Square Root FSSQRT FPy Same As FSSQRT FPy,FPy FDSQRT Square Root FDSQRT FPy Same As FDSQRT FPy,FPy Program Control Instructions Instruction OP Syntax OP Format ----------- --------- --------- * FBcc <label> W,L FNOP - - FTST []y Test Operand B,W,L,S,D FTST FPy Test Operand D * -- See the Conditional Test Mnemonics System Control Instructions Instruction OP Syntax OP Format ----------- --------- --------- FRESTORE []y - FSAVE []x - Condition Test Mnemonics MNE IEEE-NonAware Tests --- ----------------------- EQ Equal NE Not Equal GT Greater Than NGT Not (Greater Than) GE Greater Than or Equal NGE Not (Greater Than or Equal) LT Less Than NLT Not (Less Than) LE Less Than or Equal NLE Not (Less Than or Equal) GL Greater or Less Than NGL Not (Greater Than or Less) GLE Greater, Less, or Equal NGLE Not (Greater,Less, or Equal) MNE IEEE-Aware Tests --- ------------------------- EQ Equal NE Not Equal OGT Ordered Greater Than ULE Unordered or Less Than or Equal OGE Ordered Greater Than or Equal ULT Unordered or Less Than OLT Ordered Less Than UGE Unordered or Greater Than or Equal OLE Ordered Less Than or Equal UGT Unordered or Greater Than OGL Ordered Greater Than or Less Than UEQ Unordered or Equal OR Ordered UN Unordered MNE Miscellaneous Tests --- ------------------------- F Always False T Always True SF Signaling Always False ST Signaling Always True SEQ Signaling Equal SNE Signaling Not Equal
... Exit the ASxxxx Documentation